2章 イーサリアムの基礎
kurotaky.icon
読書会のあつまりでやること
2.1 イーサの通貨単位
イーサリアムの通貨 = Ether、通貨単位としてetherと表記される
ETHまたは Ξ (ギリシャ文字Xi) ◆? ♦?
それぞれ、Unicodeで U+039E、U+2666 らしい
最小単位はwei
1 etherは100京wei (1×10^18)
イーサリアムはシステム、イーサは通貨
イーサリアム内のイーサは常にwei建ての正の整数値
1etherを処理するとトランザクションは1000000000000000000 wei を値としてエンコードする
様々な通貨単位名がある
2.2 イーサリアムウォレットの選択
イーサリアムシステムへの入り口
「ウォレット」イーサリアムアカウントの管理に役立つソフトウェアアプリケーション 鍵を保持し、トランザクションを作成し、ブロードキャストすることができる
イーサリアムプラットフォーム自体がまだ改良の途上であり、プラットフォームのアップグレードに伴う変更に適応できるウォレットが「最高の」ウォレットということになる
他のウォレットに移行したい時は
秘密鍵をエクスポートして新しくウォレットにインポート
新しいウォレットに送金する
色々なウォレット
PCでブラウザだとみんなこれなイメージ
MyEtherWallet (MEW)
Emerald Wallet
2.3 管理と責任
オープンブロックチェーンが重要なのは、それらが非中央集権型システムとして機能するから
本書では、資金とスマートコントラクトへのアクセスの組み合わせを「アカウント」または「ウォレット」と呼ぶ事がある
基本的な考え方は、1つの秘密鍵が1つのアカウントを意味するという単純なもの
秘密鍵を失うとアクセスできなくなる、取り戻す手助けを誰もできない
鍵をニーモニックの単語列でバックアップする時は物理的なコピーを取って安全に保管しましょう
大量の金額を取引する時は、まず小さなテスト取引を行うと良い
アカウント作成時も少額のテストトランザクションを送ると良い
パブリックブロックチェーンエクスプローラーはトランザクションがネットワークに受け入れられたかどうか独自に簡単に確認できるが、この利便性はプライバシーに悪影響がある。ユーザーのアドレスが明らかになって、追跡可能になってしまうから
この本に記載されているアドレスには送金してはいけません!秘密鍵も記載しているから誰かが資金をすぐに奪い取れる
2.4 MetaMask入門
Chrome拡張として、MetaMaskをインストールしましょう
ニーモニックはしっかり管理しましょう。(2回に分けて、金庫がベスト)
ネットワークを切り替えましょう(デフォルトはメインネット)
Ropsten, Kovan, Rinkeby, Localhost:8545, カスタムRPCなど
MetaMaskとテストネットを使って鎖人間たちでイーサを送りあいましょう gas(ガス)費用という手数料がかかる
トランザクションを検証するためにマイナーが徴収する
イーサでガスを払う
テストネットワークの手数料はかかるよ
DoS攻撃や不適切に作成されたコントラクト(無限ループなど)からテストネットワークを保護する
アドレスのトランザクション履歴を確認
2.5 ワールドコンピュータ入門
これまではイーサリアムを暗号通貨として扱ってきた
ずっと多くのことができる!
暗号通貨の機能は非中央集権型ワールドコンピュータとしてのイーサリアムの機能に従属するものです
イーサはEVM(イーサリアム仮想マシン)上で実行されるコンピュータプログラムであるスマートコントラクトを実行するための支払いに使用される。 EVMはグローバルシングルトン
グローバルな単一インスタンスのコンピュータ、あらゆる場所で実行されているように動作
イーサリアム上の各ノードはEVMのローカルコピーを実行してコントラクトの実行を検証
イーサリアムブロックチェーンはトランザクションとスマートコントラクトを処理する際にワールドコンピュータの状態(state)の変化を記録します
2.6 外部所有アカウント(EOA)とコントラクト
MetaMaskに作成したアカウントのことを外部所有アカウント (Externally Owned Account: EOA)と呼ぶ
他の種類のアカウントとは、コントラクトアカウント、コントラクトアカウントは単純なEOAにはない、スマートコントラクトコードを保有している
コントラクトアカウントには秘密鍵がない、その代わりにコントラクトアカウントはスマートコントラクトコードのロジックによって所有(そして制御)されている
スマートコントラクトコードはコントラクトアカウント作成時にイーサリアムブロックチェーンに記録され、EVMによって実行されるソフトウェアプログラム
コントラクトはEOAと同様にイーサを送受信することもできる
イーサに加えて、トランザクションにはコントラクトのどの特定の関数を実行するか、その関数にどのパラメータを渡すかを示すデータ(data)を含めることができる。そしてトランザクションはコントラクト内の関数を呼び出す(call)事ができる
コントラクトアカウントは秘密鍵がないので、トランザクションを開始(initiate)できない。EOAのみが開始できる
コントラクトは他のコントラクトを呼び出して複雑な実行パスを構築することで、トランザクションに反応できる
EOAが他のアドレスにETHを送信するために、マルチシグネチャ・スマートコントラクト・ウォレットにリクエストトランザクションを送信する
2.7 シンプルなコントラクト
Faucet.sol: ファウセットを実装するSolidityコントラクト
2.8 ファウセットコントラクトのコンパイル
コンパイラといえばsolc
2018年の本だから、バージョン低いかも
本のバージョンに合わせてRemix使うのが良さそう
2.9 ブロックチェーン上でのコントラクトの作成
辛抱強く待ちましょう
2.10 コントラクトとのやり取り
コントラクトアドレス入金引き出しやっていきましょう
2.11 まとめ
MetaMaskを使ってテストネットのファウセット使って入金ができる
Remix IDEでSolidity書いて動かしました
ワールドコンピュータ上で資金をコントロールするソフトウェアとやり取りした!
hr.icon
次章!